home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / WarpQuake / Src / modelgen.h < prev    next >
C/C++ Source or Header  |  2000-05-22  |  3KB  |  135 lines

  1. /*
  2. Copyright (C) 1996-1997 Id Software, Inc.
  3.  
  4. This program is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU General Public License
  6. as published by the Free Software Foundation; either version 2
  7. of the License, or (at your option) any later version.
  8.  
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
  12.  
  13. See the GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with this program; if not, write to the Free Software
  17. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  18.  
  19. */
  20. //
  21. // modelgen.h: header file for model generation program
  22. //
  23.  
  24. // *********************************************************
  25. // * This file must be identical in the modelgen directory *
  26. // * and in the Quake directory, because it's used to      *
  27. // * pass data from one to the other via model files.      *
  28. // *********************************************************
  29.  
  30. #ifdef INCLUDELIBS
  31.  
  32. #include <stdlib.h>
  33. #include <stdio.h>
  34. #include <math.h>
  35. #include <string.h>
  36.  
  37. #include "cmdlib.h"
  38. #include "scriplib.h"
  39. #include "trilib.h"
  40. #include "lbmlib.h"
  41. #include "mathlib.h"
  42.  
  43. #endif
  44.  
  45. #define ALIAS_VERSION    6
  46.  
  47. #define ALIAS_ONSEAM                0x0020
  48.  
  49. // must match definition in spritegn.h
  50. #ifndef SYNCTYPE_T
  51. #define SYNCTYPE_T
  52. typedef enum {ST_SYNC=0, ST_RAND } synctype_t;
  53. #endif
  54.  
  55. typedef enum { ALIAS_SINGLE=0, ALIAS_GROUP } aliasframetype_t;
  56.  
  57. typedef enum { ALIAS_SKIN_SINGLE=0, ALIAS_SKIN_GROUP } aliasskintype_t;
  58.  
  59. typedef struct {
  60.     int            ident;
  61.     int            version;
  62.     vec3_t        scale;
  63.     vec3_t        scale_origin;
  64.     float        boundingradius;
  65.     vec3_t        eyeposition;
  66.     int            numskins;
  67.     int            skinwidth;
  68.     int            skinheight;
  69.     int            numverts;
  70.     int            numtris;
  71.     int            numframes;
  72.     synctype_t    synctype;
  73.     int            flags;
  74.     float        size;
  75. } mdl_t;
  76.  
  77. // TODO: could be shorts
  78.  
  79. typedef struct {
  80.     int        onseam;
  81.     int        s;
  82.     int        t;
  83. } stvert_t;
  84.  
  85. typedef struct dtriangle_s {
  86.     int                    facesfront;
  87.     int                    vertindex[3];
  88. } dtriangle_t;
  89.  
  90. #define DT_FACES_FRONT                0x0010
  91.  
  92. // This mirrors trivert_t in trilib.h, is present so Quake knows how to
  93. // load this data
  94.  
  95. typedef struct {
  96.     byte    v[3];
  97.     byte    lightnormalindex;
  98. } trivertx_t;
  99.  
  100. typedef struct {
  101.     trivertx_t    bboxmin;    // lightnormal isn't used
  102.     trivertx_t    bboxmax;    // lightnormal isn't used
  103.     char        name[16];    // frame name from grabbing
  104. } daliasframe_t;
  105.  
  106. typedef struct {
  107.     int            numframes;
  108.     trivertx_t    bboxmin;    // lightnormal isn't used
  109.     trivertx_t    bboxmax;    // lightnormal isn't used
  110. } daliasgroup_t;
  111.  
  112. typedef struct {
  113.     int            numskins;
  114. } daliasskingroup_t;
  115.  
  116. typedef struct {
  117.     float    interval;
  118. } daliasinterval_t;
  119.  
  120. typedef struct {
  121.     float    interval;
  122. } daliasskininterval_t;
  123.  
  124. typedef struct {
  125.     aliasframetype_t    type;
  126. } daliasframetype_t;
  127.  
  128. typedef struct {
  129.     aliasskintype_t    type;
  130. } daliasskintype_t;
  131.  
  132. #define IDPOLYHEADER    (('O'<<24)+('P'<<16)+('D'<<8)+'I')
  133.                                                         // little-endian "IDPO"
  134.  
  135.